package com.haixiaoke.saas.repository.mapper;

import com.haixiaoke.saas.repository.pojo.ApartmentItemRuleRef;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 账单规则与收费项目关系Mapper接口
 *
 * @author qixi
 * @date 2023-06-16
 */
public interface ApartmentItemRuleRefMapper {
    /**
     * 查询账单规则与收费项目关系
     *
     * @param refId 账单规则与收费项目关系主键
     * @return 账单规则与收费项目关系
     */
    ApartmentItemRuleRef selectApartmentItemRuleRefByRefId(Long refId);

    /**
     * 查询账单规则与收费项目关系列表
     *
     * @param apartmentItemRuleRef 账单规则与收费项目关系
     * @return 账单规则与收费项目关系集合
     */
    List<ApartmentItemRuleRef> selectApartmentItemRuleRefList(ApartmentItemRuleRef apartmentItemRuleRef);

    /**
     * 新增账单规则与收费项目关系
     *
     * @param apartmentItemRuleRef 账单规则与收费项目关系
     * @return 结果
     */
    int insertApartmentItemRuleRef(ApartmentItemRuleRef apartmentItemRuleRef);

    /**
     * 修改账单规则与收费项目关系
     *
     * @param apartmentItemRuleRef 账单规则与收费项目关系
     * @return 结果
     */
    int updateApartmentItemRuleRef(ApartmentItemRuleRef apartmentItemRuleRef);

    /**
     * 删除账单规则与收费项目关系
     *
     * @param refId 账单规则与收费项目关系主键
     * @return 结果
     */
    int deleteApartmentItemRuleRefByRefId(Long refId);

    /**
     * 批量删除账单规则与收费项目关系
     *
     * @param refIds 需要删除的数据主键集合
     * @return 结果
     */
    int deleteApartmentItemRuleRefByRefIds(Long[] refIds);

    List<ApartmentItemRuleRef> selectApartmentItemRuleRefByRuleId(Long ruleId);

    int deleteApartmentItemRuleRefNotInRefIds(@Param("ruleId") Long ruleId, @Param("refIds") List<Long> refIds);

    int checkItemNamesUnique(@Param("itemNames") List<String> itemNames, @Param("ruleId") Long ruleId);

    int insertApartmentItemRuleRefBatch(List<ApartmentItemRuleRef> refs);
}
